package cn.edu.gzhu.workOrderManagement.service;

import cn.edu.gzhu.workOrderManagement.enumeration.UserAuthorityEnum;
import cn.edu.gzhu.workOrderManagement.pojo.dto.user.*;
import cn.edu.gzhu.workOrderManagement.pojo.vo.UserLoginVo;
import cn.edu.gzhu.workOrderManagement.pojo.vo.UserVo;
import com.baomidou.mybatisplus.core.metadata.IPage;

/**
 * 普通用户接口实现类
 * 鉴权与授权写在拦截器中，仅有普通的增删查改
 * @author chen xi
 */
public interface UserService {
    /**
     * 注册，插入成功返回1失败返回0,使用sha256加密密码
     * @param userRegisterDtoDto 包含username password organization authority
     * @return 返回0则注册失败
     */
    Boolean saveUser(UserRegisterDto userRegisterDtoDto);

    /**
     * 登入颁发jwt令牌，登入成功返回userVo中的用户数据以及JWT令牌，不成功返回空对象
     * @param userLoginDto 包含username password
     * @return
     */
    UserLoginVo getUserByUsernameAndPW(UserLoginDto userLoginDto);

    /**
     * 按条件查询组织中的用户
     * @param userListDto
     * @return
     */
    IPage<UserVo> listByConditions(UserListDto userListDto);

    /**
     * 修改用户属性
     * @param userUpdateDto
     * @return
     */
    Boolean updateUser(UserAuthorityEnum userAuthorityEnum, UserUpdateDto userUpdateDto);

    /**
     * 按用户名批量删除用户
     * @param userDeleteDto
     * @return
     */
    Boolean deleteUsersByUsernames(UserDeleteDto userDeleteDto);

    /**
     * 根据组织名删除组织下所有用户
     * @param organization
     * @returnxz
     */
    Boolean deleteUsersByOrganization(String organization);

    Boolean activateUsers(UserDeleteDto userDeleteDto);
}
